namespace ext
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>Configuration Structure</summary>
	/// <definedin>src\widgets\Resizable.js</definedin>
	public sealed class Resizable_Configuration : Record
	{
		
		#region Fields
		/// <summary>
		/// String &apos;auto&apos; or an array [width, height] with values to be added to the
		/// resize operation&apos;s new size (defaults to [0, 0])
		/// </summary>
		/// <htmlSummary>
		/// String &apos;auto&apos; or an array [width, height] with values to be &lt;b&gt;added&lt;/b&gt; to the
		/// resize operation&apos;s new size (defaults to &lt;tt&gt;[0, 0]&lt;/tt&gt;)
		/// </htmlSummary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("adjustments")]
		public ext.auto.System_String_Or_System_Array Adjustments;
		
		/// <summary>True to animate the resize (not compatible with dynamic sizing, defaults to false)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("animate")]
		public bool Animate;
		
		/// <summary>Constrain the resize to a particular element</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("constrainTo")]
		public object ConstrainTo;
		
		/// <summary>True to disable mouse tracking. This is only applied at config time. (defaults to false)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("disableTrackOver")]
		public bool DisableTrackOver;
		
		/// <summary>Convenience to initialize drag drop (defaults to false)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("draggable")]
		public bool Draggable;
		
		/// <summary>Animation duration if animate = true (defaults to 0.35)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("duration")]
		public System.Number Duration;
		
		/// <summary>True to resize the element while dragging instead of using a proxy (defaults to false)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("dynamic")]
		public bool Dynamic;
		
		/// <summary>Animation easing if animate = true (defaults to &apos;easingOutStrong&apos;)</summary>
		/// <htmlSummary>Animation easing if animate = true (defaults to &lt;tt&gt;&apos;easingOutStrong&apos;&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("easing")]
		public string Easing;
		
		/// <summary>False to disable resizing (defaults to true)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("enabled")]
		public bool Enabled;
		
		/// <summary>
		/// String consisting of the resize handles to display (defaults to undefined).
		/// Specify either &apos;all&apos; or any of &apos;n s e w ne nw se sw&apos;.
		/// </summary>
		/// <htmlSummary>
		/// String consisting of the resize handles to display (defaults to undefined).
		/// Specify either &lt;tt&gt;&apos;all&apos;&lt;/tt&gt; or any of &lt;tt&gt;&apos;n s e w ne nw se sw&apos;&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("handles")]
		public string Handles;
		
		/// <summary>Deprecated. Deprecated style of adding multi-direction resize handles.</summary>
		/// <htmlSummary>&lt;b&gt;Deprecated&lt;/b&gt;. Deprecated style of adding multi-direction resize handles.</htmlSummary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("multiDirectional")]
		public bool MultiDirectional;
		
		/// <summary>The height of the element in pixels (defaults to null)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("height")]
		public System.Number Height;
		
		/// <summary>The width of the element in pixels (defaults to null)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("width")]
		public System.Number Width;
		
		/// <summary>
		/// The increment to snap the height resize in pixels
		/// (only applies if {@link #dynamic}==true). Defaults to 0.
		/// </summary>
		/// <htmlSummary>
		/// The increment to snap the height resize in pixels
		/// (only applies if &lt;code&gt;{@link #dynamic}==true&lt;/code&gt;). Defaults to &lt;tt&gt;0&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("heightIncrement")]
		public System.Number HeightIncrement;
		
		/// <summary>
		/// The increment to snap the width resize in pixels
		/// (only applies if {@link #dynamic}==true). Defaults to 0.
		/// </summary>
		/// <htmlSummary>
		/// The increment to snap the width resize in pixels
		/// (only applies if &lt;code&gt;{@link #dynamic}==true&lt;/code&gt;). Defaults to &lt;tt&gt;0&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("widthIncrement")]
		public System.Number WidthIncrement;
		
		/// <summary>The minimum height for the element (defaults to 5)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("minHeight")]
		public System.Number MinHeight;
		
		/// <summary>The minimum width for the element (defaults to 5)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("minWidth")]
		public System.Number MinWidth;
		
		/// <summary>The maximum height for the element (defaults to 10000)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("maxHeight")]
		public System.Number MaxHeight;
		
		/// <summary>The maximum width for the element (defaults to 10000)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("maxWidth")]
		public System.Number MaxWidth;
		
		/// <summary>The minimum x for the element (defaults to 0)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("minX")]
		public System.Number MinX;
		
		/// <summary>The minimum x for the element (defaults to 0)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("minY")]
		public System.Number MinY;
		
		/// <summary>
		/// True to ensure that the resize handles are always visible, false to display them only when the
		/// user mouses over the resizable borders. This is only applied at config time. (defaults to false)
		/// </summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("pinned")]
		public bool Pinned;
		
		/// <summary>
		/// True to preserve the original ratio between height
		/// and width during resize (defaults to false)
		/// </summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("preserveRatio")]
		public bool PreserveRatio;
		
		/// <summary>True to resize the first child, or id/element to resize (defaults to false)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("resizeChild")]
		public ext.auto.System_Boolean_Or_System_String_Or_ext_Element ResizeChild;
		
		/// <summary>True for transparent handles. This is only applied at config time. (defaults to false)</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("transparent")]
		public bool Transparent;
		
		/// <summary>Constrain the resize to a particular region</summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("resizeRegion")]
		public ext.lib.Region ResizeRegion;
		
		/// <summary>
		/// True to wrap an element with a div if needed (required for textareas and images, defaults to false)
		/// in favor of the handles config option (defaults to false)
		/// </summary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("wrap")]
		public bool Wrap;
		
		/// <summary>A css class to add to each handle. Defaults to &apos;&apos;.</summary>
		/// <htmlSummary>A css class to add to each handle. Defaults to &lt;tt&gt;&apos;&apos;&lt;/tt&gt;.</htmlSummary>
		/// <definedin>src\widgets\Resizable.js</definedin>
		[ScriptName("handleCls")]
		public string HandleCls;
		#endregion
		
		#region ext.util.Observable_Configuration Members
		/// <summary>
		/// A config object containing one or more event handlers to be added to this
		/// object during initialization. This should be a valid listeners config object as specified in the
		/// {@link #addListener} example for attaching multiple handlers at once.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;A config object containing one or more event handlers to be added to this
		/// object during initialization. This should be a valid listeners config object as specified in the
		/// {@link #addListener} example for attaching multiple handlers at once.&lt;/p&gt;
		/// &lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;DOM events from ExtJs {@link Ext.Component Components}&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
		/// &lt;br&gt;&lt;p&gt;While &lt;i&gt;some&lt;/i&gt; ExtJs Component classes export selected DOM events (e.g. &quot;click&quot;, &quot;mouseover&quot; etc), this
		/// is usually only done when extra value can be added. For example the {@link Ext.DataView DataView}&apos;s
		/// &lt;b&gt;&lt;code&gt;{@link Ext.DataView#click click}&lt;/code&gt;&lt;/b&gt; event passing the node clicked on. To access DOM
		/// events directly from a Component&apos;s HTMLElement, listeners must be added to the &lt;i&gt;{@link Ext.Component#getEl Element}&lt;/i&gt; after the Component
		/// has been rendered. A plugin can simplify this step:&lt;pre&gt;&lt;code&gt;
		/// // Plugin is configured with a listeners config object.
		/// // The Component is appended to the argument list of all handler functions.
		/// Ext.DomObserver = Ext.extend(Object, {
		/// constructor: function(config) {
		/// this.listeners = config.listeners ? config.listeners : config;
		/// },
		///
		/// // Component passes itself into plugin&amp;#39;s init method
		/// init: function(c) {
		/// var p, l = this.listeners;
		/// for (p in l) {
		/// if (Ext.isFunction(l[p])) {
		/// l[p] = this.createHandler(l[p], c);
		/// } else {
		/// l[p].fn = this.createHandler(l[p].fn, c);
		/// }
		/// }
		///
		/// // Add the listeners to the Element immediately following the render call
		/// c.render = c.render.{@link Function#createSequence createSequence}(function() {
		/// var e = c.getEl();
		/// if (e) {
		/// e.on(l);
		/// }
		/// });
		/// },
		///
		/// createHandler: function(fn, c) {
		/// return function(e) {
		/// fn.call(this, e, c);
		/// };
		/// }
		/// });
		///
		/// var combo = new Ext.form.ComboBox({
		///
		/// // Collapse combo when its element is clicked on
		/// plugins: [ new Ext.DomObserver({
		/// click: function(evt, comp) {
		/// comp.collapse();
		/// }
		/// })],
		/// store: myStore,
		/// typeAhead: true,
		/// mode: &apos;local&apos;,
		/// triggerAction: &apos;all&apos;
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\ext-core\src\util\Observable.js</definedin>
		/// <optional>Optional Field</optional>
		[ScriptName("listeners")]
		public object Listeners;
		#endregion
	}
}
